package com.yueqian.exception;

import java.io.FileInputStream;
import java.io.FileNotFoundException;

public class Test {
    public static void main(String[] args) throws FileNotFoundException {

        /**
         * 异常的处理机制：
         * 1- 将认为可能有问题的代码放入 try 代码段中，如果出现问题，由后续的catch代码段捕获
         * 2- 如果try 代码段中没有异常则后续的catch不会执行，如果某条语句出现异常，则try中其后的代码段被忽略。
         * 3- catch代码段用来捕获异常，由于try代码段可能有多个异常，所以需要多个catch来捕获。
         *     catch代码段会按照从上到下的顺序，试图捕获抛出的异常，如果被某个catch捕获到，则其后的catch不会执行。
         * 4- 可以使用catch(Exception e)作为捕获异常的收尾，来处理未预见。
         * 5- 由于父类异常可以获取子类异常引用，则父类的异常处理catch代码段不能放到子类异常处理的catch代码段之前，否则编译错误。
         * 6- 异常处理安全的最后一道屏障： finally代码段无论任何情况都会执行。经常使用finally进行关闭连接。
         */
        int a = 10;
        try {
            int[] b = new int[1];
            b[0] = 1;
            int c = a / b[0];
            System.out.println(c);
            return;
        } catch (ArithmeticException e) {
            e.printStackTrace();
        } catch (ArrayIndexOutOfBoundsException e) {
            e.printStackTrace();
        } finally {
            System.out.println("finally ...");
        }

//            int x = 10 / 0;

        FileInputStream fin = new FileInputStream("d:/aa.txt");
//        try {
//        } catch (FileNotFoundException e) {
//            e.printStackTrace();
//        }

        System.out.println("main end ...");


    }
}
